//===============================================================================
// Microsoft patterns & practices
// Smart Client Software Factory
//===============================================================================
// Copyright (C) Microsoft Corporation.  All rights reserved.
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
// FITNESS FOR A PARTICULAR PURPOSE.
//===============================================================================
// The example companies, organizations, products, domain names,
// e-mail addresses, logos, people, places, and events depicted
// herein are fictitious.  No association with any real company,
// organization, product, domain name, email address, logo, person,
// places, or events is intended or should be inferred.
//===============================================================================

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.42
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by wsdl, Version=2.0.50727.42.
// 
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Threading;
using System.Web.Services;
using System.Web.Services.Description;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

namespace GlobalBank.BasicAccounts.ServiceProxies
{
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [WebServiceBinding(Name="BasicHttpBinding_IAccountService", Namespace="http://tempuri.org/")]
    public partial class AccountService : SoapHttpClientProtocol {
        
        private SendOrPostCallback PurchaseCertificateOfDepositOperationCompleted;
        
        /// <remarks/>
        public AccountService() {
            this.Url = "http://localhost:54078/GlobalBankServices/AccountService.asmx";
        }
        
        /// <remarks/>
        public event PurchaseCertificateOfDepositCompletedEventHandler PurchaseCertificateOfDepositCompleted;
        
        /// <remarks/>
        [SoapDocumentMethod("PurchaseCertificateOfDeposit", RequestNamespace="http://GlobalBranchServicesServiceContracts/2006/04/IAccountService", ResponseNamespace="http://GlobalBranchServicesServiceContracts/2006/04/IAccountService", Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
        public void PurchaseCertificateOfDeposit(PurchaseCertidicateOfDepositRequest request) {
            this.Invoke("PurchaseCertificateOfDeposit", new object[] {
                        request});
        }
        
        /// <remarks/>
        public IAsyncResult BeginPurchaseCertificateOfDeposit(PurchaseCertidicateOfDepositRequest request, AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("PurchaseCertificateOfDeposit", new object[] {
                        request}, callback, asyncState);
        }
        
        /// <remarks/>
        public void EndPurchaseCertificateOfDeposit(IAsyncResult asyncResult) {
            this.EndInvoke(asyncResult);
        }
        
        /// <remarks/>
        public void PurchaseCertificateOfDepositAsync(PurchaseCertidicateOfDepositRequest request) {
            this.PurchaseCertificateOfDepositAsync(request, null);
        }
        
        /// <remarks/>
        public void PurchaseCertificateOfDepositAsync(PurchaseCertidicateOfDepositRequest request, object userState) {
            if ((this.PurchaseCertificateOfDepositOperationCompleted == null)) {
                this.PurchaseCertificateOfDepositOperationCompleted = new SendOrPostCallback(this.OnPurchaseCertificateOfDepositOperationCompleted);
            }
            this.InvokeAsync("PurchaseCertificateOfDeposit", new object[] {
                        request}, this.PurchaseCertificateOfDepositOperationCompleted, userState);
        }
        
        private void OnPurchaseCertificateOfDepositOperationCompleted(object arg) {
            if ((this.PurchaseCertificateOfDepositCompleted != null)) {
                InvokeCompletedEventArgs invokeArgs = ((InvokeCompletedEventArgs)(arg));
                this.PurchaseCertificateOfDepositCompleted(this, new AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        public new void CancelAsync(object userState) {
            base.CancelAsync(userState);
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServicesDataContracts/2006/05/PurchaseCertidicateOfDepositRequ" +
        "est")]
    public partial class PurchaseCertidicateOfDepositRequest {
        
        private int durationInDaysField;
        
        private float interestRateField;
        
        private float amountField;
        
        private accountType sourceAccountField;
        
        private Customer customerField;
        
        /// <remarks/>
        public int DurationInDays {
            get {
                return this.durationInDaysField;
            }
            set {
                this.durationInDaysField = value;
            }
        }
        
        /// <remarks/>
        public float InterestRate {
            get {
                return this.interestRateField;
            }
            set {
                this.interestRateField = value;
            }
        }
        
        /// <remarks/>
        public float Amount {
            get {
                return this.amountField;
            }
            set {
                this.amountField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public accountType SourceAccount {
            get {
                return this.sourceAccountField;
            }
            set {
                this.sourceAccountField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public Customer Customer {
            get {
                return this.customerField;
            }
            set {
                this.customerField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServices/2006/05/CustomerProductsEntities.xsd")]
    public partial class accountType {
        
        private string customerIdField;
        
        private accountTypeType accountType1Field;
        
        private decimal balanceField;
        
        private DateTime dateOpenedField;
        
        private DateTime lastTransactionAtField;
        
        private float interestRateField;
        
        private string accountNumberField;
        
        /// <remarks/>
        public string customerId {
            get {
                return this.customerIdField;
            }
            set {
                this.customerIdField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement("accountType")]
        public accountTypeType accountType1 {
            get {
                return this.accountType1Field;
            }
            set {
                this.accountType1Field = value;
            }
        }
        
        /// <remarks/>
        public decimal balance {
            get {
                return this.balanceField;
            }
            set {
                this.balanceField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(DataType="date")]
        public DateTime dateOpened {
            get {
                return this.dateOpenedField;
            }
            set {
                this.dateOpenedField = value;
            }
        }
        
        /// <remarks/>
        public DateTime lastTransactionAt {
            get {
                return this.lastTransactionAtField;
            }
            set {
                this.lastTransactionAtField = value;
            }
        }
        
        /// <remarks/>
        public float interestRate {
            get {
                return this.interestRateField;
            }
            set {
                this.interestRateField = value;
            }
        }
        
        /// <remarks/>
        [XmlAttribute()]
        public string accountNumber {
            get {
                return this.accountNumberField;
            }
            set {
                this.accountNumberField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServices/2006/05/CustomerProductsEntities.xsd")]
    public partial class accountTypeType {
        
        private string typeField;
        
        private float feesField;
        
        private int maxMonthlyTransactionField;
        
        private float interestRateField;
        
        private int idField;
        
        /// <remarks/>
        public string type {
            get {
                return this.typeField;
            }
            set {
                this.typeField = value;
            }
        }
        
        /// <remarks/>
        public float fees {
            get {
                return this.feesField;
            }
            set {
                this.feesField = value;
            }
        }
        
        /// <remarks/>
        public int maxMonthlyTransaction {
            get {
                return this.maxMonthlyTransactionField;
            }
            set {
                this.maxMonthlyTransactionField = value;
            }
        }
        
        /// <remarks/>
        public float interestRate {
            get {
                return this.interestRateField;
            }
            set {
                this.interestRateField = value;
            }
        }
        
        /// <remarks/>
        [XmlAttribute()]
        public int id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServicesDataContracts/2006/04/Comment")]
    public partial class Comment {
        
        private DateTime dateTimeField;
        
        private string comment1Field;
        
        private string authorNameField;
        
        /// <remarks/>
        public DateTime DateTime {
            get {
                return this.dateTimeField;
            }
            set {
                this.dateTimeField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement("Comment", IsNullable=true)]
        public string Comment1 {
            get {
                return this.comment1Field;
            }
            set {
                this.comment1Field = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string AuthorName {
            get {
                return this.authorNameField;
            }
            set {
                this.authorNameField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServicesDataContracts/2006/04/EmailAddress")]
    public partial class EmailAddress {
        
        private string emailAddress1Field;
        
        private string typeField;
        
        /// <remarks/>
        [XmlElement("EmailAddress", IsNullable=true)]
        public string EmailAddress1 {
            get {
                return this.emailAddress1Field;
            }
            set {
                this.emailAddress1Field = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string Type {
            get {
                return this.typeField;
            }
            set {
                this.typeField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServicesDataContracts/2006/04/PhoneNumber")]
    public partial class PhoneNumber {
        
        private string phoneNumber1Field;
        
        private string phoneTypeField;
        
        /// <remarks/>
        [XmlElement("PhoneNumber", IsNullable=true)]
        public string PhoneNumber1 {
            get {
                return this.phoneNumber1Field;
            }
            set {
                this.phoneNumber1Field = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string PhoneType {
            get {
                return this.phoneTypeField;
            }
            set {
                this.phoneTypeField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServicesDataContracts/2006/04/Address")]
    public partial class Address {
        
        private string addressTypeField;
        
        private string address1Field;
        
        private string address2Field;
        
        private string cityField;
        
        private string stateProvinceField;
        
        private string countryCodeField;
        
        private string postalZipCodeField;
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string AddressType {
            get {
                return this.addressTypeField;
            }
            set {
                this.addressTypeField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string Address1 {
            get {
                return this.address1Field;
            }
            set {
                this.address1Field = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string Address2 {
            get {
                return this.address2Field;
            }
            set {
                this.address2Field = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string City {
            get {
                return this.cityField;
            }
            set {
                this.cityField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string StateProvince {
            get {
                return this.stateProvinceField;
            }
            set {
                this.stateProvinceField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string CountryCode {
            get {
                return this.countryCodeField;
            }
            set {
                this.countryCodeField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string PostalZipCode {
            get {
                return this.postalZipCodeField;
            }
            set {
                this.postalZipCodeField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace="http://GlobalBranchServicesDataContracts/2006/04/Customer")]
    public partial class Customer {
        
        private string customerIdField;
        
        private string firstNameField;
        
        private string lastNameField;
        
        private string middleInitialField;
        
        private string sSNumberField;
        
        private string motherMaidenNameField;
        
        private Address[] addressesField;
        
        private PhoneNumber[] phoneNumbersField;
        
        private EmailAddress[] emailAddressesField;
        
        private Comment[] commentsField;
        
        private string customerLevelField;
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string CustomerId {
            get {
                return this.customerIdField;
            }
            set {
                this.customerIdField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string FirstName {
            get {
                return this.firstNameField;
            }
            set {
                this.firstNameField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string LastName {
            get {
                return this.lastNameField;
            }
            set {
                this.lastNameField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string MiddleInitial {
            get {
                return this.middleInitialField;
            }
            set {
                this.middleInitialField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string SSNumber {
            get {
                return this.sSNumberField;
            }
            set {
                this.sSNumberField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string MotherMaidenName {
            get {
                return this.motherMaidenNameField;
            }
            set {
                this.motherMaidenNameField = value;
            }
        }
        
        /// <remarks/>
        [XmlArray(IsNullable=true)]
        [XmlArrayItem(Namespace="http://GlobalBranchServicesDataContracts/2006/04/Address")]
        public Address[] Addresses {
            get {
                return this.addressesField;
            }
            set {
                this.addressesField = value;
            }
        }
        
        /// <remarks/>
        [XmlArray(IsNullable=true)]
        [XmlArrayItem(Namespace="http://GlobalBranchServicesDataContracts/2006/04/PhoneNumber")]
        public PhoneNumber[] PhoneNumbers {
            get {
                return this.phoneNumbersField;
            }
            set {
                this.phoneNumbersField = value;
            }
        }
        
        /// <remarks/>
        [XmlArray(IsNullable=true)]
        [XmlArrayItem(Namespace="http://GlobalBranchServicesDataContracts/2006/04/EmailAddress")]
        public EmailAddress[] EmailAddresses {
            get {
                return this.emailAddressesField;
            }
            set {
                this.emailAddressesField = value;
            }
        }
        
        /// <remarks/>
        [XmlArray(IsNullable=true)]
        [XmlArrayItem(Namespace="http://GlobalBranchServicesDataContracts/2006/04/Comment")]
        public Comment[] Comments {
            get {
                return this.commentsField;
            }
            set {
                this.commentsField = value;
            }
        }
        
        /// <remarks/>
        [XmlElement(IsNullable=true)]
        public string CustomerLevel {
            get {
                return this.customerLevelField;
            }
            set {
                this.customerLevelField = value;
            }
        }
    }
    
    /// <remarks/>
    [GeneratedCode("wsdl", "2.0.50727.42")]
    public delegate void PurchaseCertificateOfDepositCompletedEventHandler(object sender, AsyncCompletedEventArgs e);
}
